[SQLServer]在关键字 'AND' 附近有语法错误

来源:百度知道 编辑:UC知道 时间:2024/06/07 11:53:19
String sql = "select PROC_ID, PROC_NAME,PROC_SPEC,PROC_GRADE,PROC_BRAND,PROC_NUM,PROC_TO,PROC_SDATE,PROC_EDATE from PROC_PLAN_INFO where 1=1";

if(vo.getPROC_NAME()!=null||!vo.getPROC_NAME().equals("")){
sql+=" AND PROC_NAME="+vo.getPROC_NAME();
}if(vo.getPROC_BRAND()!=null||!vo.getPROC_BRAND().equals("")){
sql+=" AND PROC_BRAND="+vo.getPROC_BRAND();
}if(vo.getPROC_SDATE()!=null||!vo.getPROC_SDATE().equals("")){
sql+=" AND PROC_SDATE="+vo.getPROC_SDATE();
}if(vo.getPROC_EDATE()!=null||!vo.getPROC_EDATE().equals("")){
sql+=" AND PROC_EDATE="+vo.getPROC_EDATE();
}

大家帮忙看下那里出错了

if (vo.getPROC_NAME() !=null || !vo.getPROC_NAME().equals(""))
{
sql += " AND PROC_NAME=" + vo.getPROC_NAME();
}

// if (vo.getPROC_NAME() != null || !vo.getPROC_NAME().equals(""))
// (vo.getPROC_NAME() != null 与!vo.getPROC_NAME().equals("")
// 之间是或的关系,只要有一个为真该if 语句就将执行
// vo.getPROC_NAME()结果若是"",则前面一个条件为真,if语句执行
// vo.getPROC_NAME()结果若是null, 则后一个条件为真,也将执行
// 所以后面动态链接的WHERE条件语句就可能会出错。

sql += " AND PROC_NAME=" + vo.getPROC_NAME();
如果 PROC_NAME 为字符串型,则需要加单引号
应该这样 sql += " AND PROC_NAME= ‘ " + vo.getPROC_NAME() +“ ’ ”;
大概错误在此,你试试